package lambda;

import collection.Point;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 *对Point 集合进行排序
 * */
public class SortPoint {
    public static void main(String[] args) {
        List<Point> list  = new ArrayList<>() ;
        list.add(new Point(81,26));
        list.add(new Point(33,49));
        list.add(new Point(56,66));
        list.add(new Point(75,68));
        list.add(new Point(95,50));
        System.out.println("list原始数据"+ list);//输出原始数据
        Collections.sort(list, new Comparator<Point>() {
            @Override
            public int compare(Point o1, Point o2) {
                int len1= o1.getX()*o1.getX()-o1.getY()*o2.getY();
                int len2= o1.getX()*o2.getX()-o1.getY()*o2.getY();
                return len1-len2;//升序   
                //return len2-len1;//降序
            }
        });//对于Point自定义类型数据不推荐Comparable接口，因为这样的操作对于我们的程序具有入侵性
        //入侵性：当我们的代码需要引入一个组件，导致其他代码要做相同的改动调整来适应这个组件，这种情况我们就称组件具有侵入性
      System.out.println("list排序后结果:"+list);

    }
}
